var BASE_DIR = __dirname + '/../';
var UTIL = BASE_DIR + 'util/';

var DateUtil = require(UTIL + 'DateUtil');

exports.getInterTransID = getInterTransID;
exports.getTransID = getTransID;
exports.generateRandomSerial = generateRandomSerial;

/**
 * 内部交易码长度
 */
const INTER_TRANS_ID_LENGTH = 32;
/**
 * 操作流水号长度
 */
const CRM_TRANSACTION_ID_LENGTH = 32;


const DEFAULT_TANSID_TYPE = "10";
const DEFAULT_TANSID_PROCODE = "999";

var ints = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];

/**
 * 获取transactionId 操作流水号，生成规则 消息类型（10） + 省编码（999） + 17位日期毫秒数 + 随机数补齐32位
 * @return String transactionId
 */
function getTransID() {
  var length = DEFAULT_TANSID_TYPE.length + DEFAULT_TANSID_PROCODE.length + 'yyyyMMddhhmmssSSS'.length;
  var transId = ''.concat(DEFAULT_TANSID_TYPE).
  concat(DEFAULT_TANSID_PROCODE).
  concat(DateUtil.getCurrentDateTimeMil()).
  concat(generateRandomSerial(CRM_TRANSACTION_ID_LENGTH - length));
  return transId;
}

/**
 * 获取内部流水号，生成规则 消息类型（10） + 17位日期毫秒数 + 随机数补齐32位
 * @return String interTransId
 */
function getInterTransID() {
  var length = DEFAULT_TANSID_TYPE.length + 'yyyyMMddhhmmssSSS'.length;
  var interTransId = ''.concat(DEFAULT_TANSID_TYPE).
  concat(DateUtil.getCurrentDateTimeMil()).
  concat(generateRandomSerial(INTER_TRANS_ID_LENGTH - length));
  return interTransId;
}

/**
 * 生成len长度的随机数序列
 * @param len
 * @return String randomString
 */
function generateRandomSerial(len) {
  var res = "";
  for (var i = 0; i < len; i++) {
    var id = Math.ceil(Math.random() * 9);
    res += ints[id];
  }
  return res;
}
